PostgreSQL 17์์ 18๋ก ์ ๊ทธ๋ ์ด๋ ๊ฐ์ด๋: ์ฃผ์ ์ด์ ๋ฐ ํด๊ฒฐ๋ฒ
PostgreSQL์ ๋ฉ์ด์ ๋ฒ์ ์ ๋ฐ์ดํธ๋ ํญ์ ์ค๋ ๋ ์ผ์ด์ง๋ง, ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์ ๊ณผ์ ์์ ์์์น ๋ชปํ ์ค๋ฅ๋ฅผ ๋ง์ฃผํ๊ธฐ๋ ํฉ๋๋ค. ์ด๋ฒ ํฌ์คํธ์์๋ PostgreSQL 17์์ 18๋ก ์ ๊ทธ๋ ์ด๋ํ ๋์ ํ์ค ์ ์ฐจ์ ์ ๊ฐ ์ง์ ๊ฒช์๋ ํธ๋ฌ๋ธ์ํ ์ฌ๋ก๋ฅผ ๊ณต์ ํฉ๋๋ค.
1. ์ ๊ทธ๋ ์ด๋ ์ ์ค๋น์ฌํญ
๋ฉ์ด์ ์ ๋ฐ์ดํธ ์ ์๋ ๋ฐ๋์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์ ํด์ผ ํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ฐฑ์
:
pg_dumpall์ ์ฌ์ฉํ์ฌ ์ ์ฒด ํด๋ฌ์คํฐ๋ฅผ ๋ฐฑ์ ํฉ๋๋ค. - ํ์ฅ ๊ธฐ๋ฅ(Extensions) ํ์ธ: PostGIS, TimescaleDB ๋ฑ ์ฌ์ฉ ์ค์ธ ์ต์คํ ์ ์ด PostgreSQL 18์ ์ง์ํ๋์ง ํ์ธํฉ๋๋ค.
- ์ฉ๋ ํ์ธ:
pg_upgrade์--link๋ชจ๋๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด, ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ ํฌ๊ธฐ์ ์ฝ 2๋ฐฐ ์ ๋์ ์ฌ์ ๊ณต๊ฐ์ด ํ์ํฉ๋๋ค.
2. ํ์ค ์ ๊ทธ๋ ์ด๋ ์ ์ฐจ (pg_upgrade)
์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฅ ๊ถ์ฅ๋๋ ๋ฐฉ์์ pg_upgrade ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค.
# 1. ์ด์ ๋ฒ์ ๊ณผ ์ ๋ฒ์ ์ ๋ฐ์ด๋๋ฆฌ ์ค์น ํ์ธ
# 2. ์ ๋ฒ์ ์ ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ ์ด๊ธฐํ (initdb)
# 3. ์
๊ทธ๋ ์ด๋ ์ฒดํฌ (๋ฌธ์ ๊ฐ ์๋์ง ๋จผ์ ํ์ธ)
pg_upgrade \
--old-datadir /var/lib/postgresql/17/main \
--new-datadir /var/lib/postgresql/18/main \
--old-bindir /usr/lib/postgresql/17/bin \
--new-bindir /usr/lib/postgresql/18/bin \
--check
# 4. ์ค์ ์
๊ทธ๋ ์ด๋ ์คํ (--link ์ต์
์ ํ๋๋งํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฆ)
pg_upgrade \
--old-datadir /var/lib/postgresql/17/main \
--new-datadir /var/lib/postgresql/18/main \
--old-bindir /usr/lib/postgresql/17/bin \
--new-bindir /usr/lib/postgresql/18/bin \
--link3. ๋ง์ฃผํ๋ ์ฃผ์ ๋ฌธ์ ์ ํด๊ฒฐ๋ฒ
์ ๊ทธ๋ ์ด๋ ๊ณผ์ ์์ ์ ๊ฐ ๊ฒช์๋ ์ฃผ์ ์ด์๋ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด์ 1: ICU ๋ก์ผ์ผ ๋ถ์ผ์น ์ค๋ฅ
PostgreSQL 17๋ถํฐ ICU ๋ก์ผ์ผ ์ง์์ด ๊ฐํ๋์๋๋ฐ, 18๋ก ๋์ด์ค๋ฉด์ ์์คํ
์ ICU ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ด ์
๋ฐ์ดํธ๋์ด pg_upgrade ์ค ์ธ๋ฑ์ค ์ ๋ ฌ(Collation) ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ:
- ์
๊ทธ๋ ์ด๋ ํ
REINDEX DATABASE๋๋REINDEX INDEX๋ฅผ ์คํํ์ฌ ์ธ๋ฑ์ค๋ฅผ ๋ค์ ๋น๋ํด์ผ ํฉ๋๋ค. pg_upgrade์--check๊ฒฐ๊ณผ์์ ๋ก์ผ์ผ ๊ด๋ จ ๊ฒฝ๊ณ ๊ฐ ๋ฌ๋ค๋ฉด, ์ ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ๋ฅผ ์ด๊ธฐํํ ๋ ๋ก์ผ์ผ ์ค์ ์ ๋ช ์์ ์ผ๋ก ๋ง์ถฐ์ค๋๋ค.
์ด์ 2: ์ ๊ฑฐ๋ ํ๋ผ๋ฏธํฐ (postgresql.conf)
PostgreSQL 18์์๋ ๊ธฐ์กด์ deprecated๋์๋ ์ผ๋ถ ์ค์ ํ๋ผ๋ฏธํฐ๋ค์ด ์์ ํ ์ ๊ฑฐ๋์์ต๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ:
postgresql.conf์์ ๋ ์ด์ ์ง์๋์ง ์๋ ์ต์ ์ ์ฃผ์ ์ฒ๋ฆฌํ๊ฑฐ๋ ์๋ก์ด ๊ถ์ฅ ์ต์ ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.- ์
๊ทธ๋ ์ด๋ ์
pg_upgrade๊ฐpostgresql.conf๋ฅผ ์ฝ์ ๋ ์๋ฌ๋ฅผ ๋ธ๋ค๋ฉด ํด๋น ํ์ผ์ ์์ ํ ๋ค ๋ค์ ์๋ํฉ๋๋ค.
์ด์ 3: pg_hba.conf ์ธ์ฆ ๋ฐฉ์ ๋ณ๊ฒฝ
๋ณด์ ๊ฐํ๋ก ์ธํด ์ด์ ์ ์ธ์ฆ ๋ฐฉ์(์: trust ๋๋ ์์ฃผ ์ค๋๋ ์ํธํ ๋ฐฉ์)์ด ๊ฑฐ๋ถ๋ ์ ์์ต๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ:
pg_hba.conf์์scram-sha-256๋ฐฉ์์ ์ฌ์ฉํ๋๋ก ์ ๋ฐ์ดํธํ๊ณ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ๋ค์ ํ์ธํฉ๋๋ค.
4. ์ ๊ทธ๋ ์ด๋ ์๋ฃ ํ ์์
- ํต๊ณ ์ ๋ณด ์
๋ฐ์ดํธ: ๋ง์ด๊ทธ๋ ์ด์
๋ ๋ฐ์ดํฐ์ ๋ํด ์ฟผ๋ฆฌ ํ๋๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋๋ก
./analyze_new_cluster.sh๋ฅผ ์คํํฉ๋๋ค. - ์ด์ ๋ฐ์ดํฐ ์ ๋ฆฌ: ๋ชจ๋ ๊ธฐ๋ฅ์ด ์ ์ ์๋ํจ์ ํ์ธํ ํ
./delete_old_cluster.sh๋ฅผ ์คํํ์ฌ 17 ๋ฒ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํฉ๋๋ค.
๋ฉ์ด์ ์ ๋ฐ์ดํธ๋ ๋ฒ๊ฑฐ๋กญ์ง๋ง, PostgreSQL 18์ ์๋ก์ด ๊ธฐ๋ฅ(์ฑ๋ฅ ๊ฐ์ , ์ฟผ๋ฆฌ ์ต์ ํ ๋ฑ)์ ์ฌ์ฉํ๊ธฐ ์ํด ๊ผญ ํ์ํ ๊ณผ์ ์ ๋๋ค. ๋น์ทํ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ๊ณ์ ๋ถ๋ค์๊ฒ ์ด ๊ธ์ด ๋์์ด ๋๊ธธ ๋ฐ๋๋๋ค.